package com.ssm.sport.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.ssm.sport.dto.ResultDTO;
import com.ssm.sport.entity.User;
import com.ssm.sport.util.UserContext;

/**
 * API控制器
 * 演示如何使用基于userId参数的用户认证
 */
@RestController
@RequestMapping("/api")
public class ApiController {

    /**
     * 获取当前用户信息
     * 请求需要包含userId参数或X-User-Id请求头
     * @return 当前用户信息
     */
    @GetMapping("/user/info")
    public ResultDTO<?> getUserInfo() {
        User currentUser = UserContext.getCurrentUser();
        if (currentUser != null) {
            // 清除敏感信息
            currentUser.setPassword(null);
            return ResultDTO.success(currentUser);
        }
        return ResultDTO.failure("未找到用户信息");
    }
    
    /**
     * 公共API，无需用户认证
     * @return 欢迎信息
     */
    @GetMapping("/public/welcome")
    public ResultDTO<?> welcome() {
        return ResultDTO.success("欢迎访问公共API");
    }
    
    /**
     * 测试API，通过userId获取用户信息
     * @return 用户ID信息
     */
    @GetMapping("/test/user-id")
    public ResultDTO<?> testUserId() {
        Integer userId = UserContext.getUserIdFromRequest();
        if (userId != null) {
            return ResultDTO.success("用户ID: " + userId);
        }
        return ResultDTO.success("未提供用户ID");
    }
} 